int olen = strlen(name);
track->rte_name = cet_str_uni_to_utf8((const short int*) name, olen);
- waypoint* start = read_waypoint();
- track_add_wpt(track, start);
-
- waypoint* end = read_waypoint();
-
- // skip one pair waypoint
- gbfseek(fin, 4*4, SEEK_CUR);
+ // skip two pair waypoint
+ gbfseek(fin, 8*4, SEEK_CUR);
// skip way length
gbfseek(fin, 8, SEEK_CUR);
// skip fixed value
int end_flag = gbfgetint32(fin);
for (;;) {
+ if (end_flag) {
+ break;
+ }
+
int length = gbfgetint32(fin);
is_fatal((length < 1) || (length > 1600), MYNAME ": get bad buffer length");
- length += 16; // the real length
is_fatal((length % 8 != 0), MYNAME ": bad buffer size");
+ gbfseek(fin, 16, SEEK_CUR);
const int amount = length/8;
for (int i = 0; i < amount; ++i) {
track_add_wpt(track, tmp);
}
- if (end_flag) {
- break;
- }
end_flag = gbfgetint32(fin);
}
-
- track_add_wpt(track, end);
}
// capabilities below means: we can only read trackpoints.
<name>山顶到豆腐花</name>
<trkseg>
<trkpt lat="23.175110000" lon="113.295130000">
-</trkpt>
- <trkpt lat="23.170610000" lon="113.295130000">
-</trkpt>
- <trkpt lat="23.175130000" lon="113.297530000">
-</trkpt>
- <trkpt lat="23.175110000" lon="113.295130000">
</trkpt>
<trkpt lat="23.175130000" lon="113.295240000">
</trkpt>
<trkpt lat="23.170610000" lon="113.297100000">
</trkpt>
<trkpt lat="23.170640000" lon="113.296990000">
-</trkpt>
- <trkpt lat="23.170640000" lon="113.295130000">
-</trkpt>
- <trkpt lat="23.175110000" lon="113.296990000">
-</trkpt>
- <trkpt lat="23.175110000" lon="113.295130000">
-</trkpt>
- <trkpt lat="23.170640000" lon="113.296990000">
-</trkpt>
- <trkpt lat="23.170640000" lon="113.296990000">
</trkpt>
</trkseg>
</trk>